/**
 * 发送 HTTP 请求的通用方法
 * @param {string} url - 请求的 URL
 * @param {string} method - 请求方法 (GET 或 POST)
 * @param {Object} [data] - 发送的数据（仅在 POST 请求时使用）
 * @param {Object} [headers] - 自定义请求头
 * @returns {Promise<Object>} - 返回解析后的 JSON 数据
 */
async function sendRequest(url, method = 'GET', data = null, headers = {}) {
    const options = {
        method: method,
        headers: {
            'Content-Type': 'application/json',
            ...headers, // 合并自定义请求头
        },
    };

    // 如果是 POST 请求，添加请求体
    if (method.toUpperCase() === 'POST' && data) {
        options.body = JSON.stringify(data);
    }

    try {
        const response = await fetch(url, options);

        // 检查响应状态
        if (!response.ok) {
            throw new Error(`HTTP error! status: ${response.status}`);
        }

        // 解析 JSON 数据
        const responseData = await response.json();
        return responseData;
    } catch (error) {
        console.error('请求失败:', error);
        throw error; // 重新抛出错误以便调用者处理
    }
}

// 示例用法
// sendRequest('http://localhost:11434/api/chat', 'POST', { model: 'mistral:latest', messages: [] })
//     .then(data => console.log(data))
//     .catch(error => console.error(error));
